package com.gftBrazil.BankSystem.util;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 *
 * @author JRSS
 * @param <P>
 */
public class Sorteador<P> {

    private final List<P> participantes;
    private final List<P> contemplados;

    /**
     *
     */
    public Sorteador() {
        participantes = new ArrayList<>();
        contemplados = new ArrayList<>();
    }

    /**
     *
     * @param participantes
     */
    public Sorteador(List<P> participantes) {
        this();
        this.participantes.addAll(participantes);
    }

    public List<P> sortear(int totalPremiados) {
        Random random = new Random();
        int sorteado;
        while (contemplados.size() < totalPremiados){
            sorteado = random.nextInt(participantes.size());
            P participante = participantes.get(sorteado);
            participantes.remove(sorteado);
            contemplados.add(participante);                    
        }
        return getContemplados();
    }

    /**
     * @return the participantes
     */
    public List<P> getParticipantes() {
        return participantes;
    }

    /**
     * @param participantes the participantes to set
     */
    public void setParticipantes(List<? extends P> participantes) {
        this.participantes.clear();
        this.participantes.addAll(participantes);
    }

    /**
     * @return the contemplados
     */
    public List<P> getContemplados() {
        return contemplados;
    }
}
